home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
workbench
/
libs
/
intuisup.lha
/
Intuisup
/
source.lha
/
Library
/
library_test.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-08-06
|
28KB
|
829 lines
/* $Revision Header *** Header built automatically - do not edit! ***********
*
* (C) Copyright 1991 by Torsten Jürgeleit
*
* Name .....: library_test.c
* Created ..: Sunday 22-Dec-91 20:35:01
* Revision .: 1
*
* Date Author Comment
* ========= ==================== ====================
* 06-Aug-92 Torsten Jürgeleit list view gadget with flag
* GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR
* 22-Dec-91 Torsten Jürgeleit Created this file!
*
****************************************************************************
*
* Test for IntuiSup library
*
* $Revision Header ********************************************************/
/* Includes */
#include <exec/types.h>
#include <exec/memory.h>
#include <graphics/gfxbase.h>
#include <graphics/text.h>
#include <intuition/intuition.h>
#ifdef AZTEC_C
#include <functions.h> /* needed for Aztec C - prototypes and pragmas for all Amiga system functions */
#endif
#include "intuisup.h"
/* Defines */
#define WINDOW_WIDTH 600
#define WINDOW_HEIGHT 180
#define WINDOW_IDCMP (CLOSEWINDOW | GADGET_IDCMP_FLAGS_ALL | MENUPICK)
#define WINDOW_FLAGS (WINDOWCLOSE | WINDOWDRAG | WINDOWDEPTH | SMART_REFRESH | NOCAREREFRESH | ACTIVATE)
#define WINDOW_TITLE (UBYTE *)" Library test "
#define RENDER_INFO_FLAGS (USHORT)(RENDER_INFO_FLAG_INNER_WINDOW | RENDER_INFO_FLAG_BACK_FILL)
#define OPEN_WINDOW_FLAGS (USHORT)OPEN_WINDOW_FLAG_CENTER_SCREEN
#define MESSAGE_LEFT_EDGE 0
#define MESSAGE_TOP_EDGE (WINDOW_HEIGHT - MESSAGE_HEIGHT - 10)
#define MESSAGE_WIDTH WINDOW_WIDTH
#define MESSAGE_HEIGHT 8
#define MESSAGE_TEXT1 "Gadget %d text %s"
#define MESSAGE_TEXT2 "Gadget %d value %ld"
#define MESSAGE_TEXT3 " Menu no. %d menu item no. %d sub item no. %d selected "
#define MESSAGE_TEXT_ATTR &topaz80_attr
/* Globals */
struct IntuitionBase *IntuitionBase;
struct Library *IntuiSupBase;
/* Statics */
STATIC struct NewWindow test_new_window = {
0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, 0, 1, WINDOW_IDCMP, WINDOW_FLAGS,
NULL, NULL, WINDOW_TITLE, NULL, NULL, 0, 0, 0, 0, WBENCHSCREEN
};
STATIC struct TextAttr topaz60_attr = { (STRPTR)"topaz.font", TOPAZ_SIXTY,
FS_NORMAL, FPF_ROMFONT },
topaz80_attr = { (STRPTR)"topaz.font", TOPAZ_EIGHTY,
FS_NORMAL, FPF_ROMFONT };
/* Defines for test gadgets */
#define TEST_GADGET_BUTTON 0
#define TEST_GADGET_BUTTON_IMAGE 1
#define TEST_GADGET_CHECK 2
#define TEST_GADGET_MX 3
#define TEST_GADGET_STRING 4
#define TEST_GADGET_INTEGER 5
#define TEST_GADGET_SLIDER_HORIZ 6
#define TEST_GADGET_SLIDER_VERT 7
#define TEST_GADGET_SCROLLER_HORIZ 8
#define TEST_GADGET_SCROLLER_VERT 9
#define TEST_GADGET_CYCLE 10
#define TEST_GADGET_COUNT 11
#define TEST_GADGET_LISTVIEW 12
#define TEST_GADGET_PALETTE 13
#define TEST_GADGET1_TYPE GADGET_DATA_TYPE_BUTTON
#define TEST_GADGET1_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET1_LEFT_EDGE 20
#define TEST_GADGET1_TOP_EDGE 10
#define TEST_GADGET1_WIDTH ((6 + 2) * 10)
#define TEST_GADGET1_HEIGHT 19
#define TEST_GADGET1_TEXT "_Button"
#define TEST_GADGET1_TEXT_ATTR &topaz60_attr
#define TEST_GADGET2_TYPE GADGET_DATA_TYPE_BUTTON
#define TEST_GADGET2_FLAGS (GADGET_DATA_FLAG_BUTTON_TOGGLE | GADGET_DATA_FLAG_BUTTON_IMAGE | GADGET_DATA_FLAG_NO_BORDER | GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET2_LEFT_EDGE 120
#define TEST_GADGET2_TOP_EDGE 15
#define TEST_GADGET2_WIDTH 16
#define TEST_GADGET2_HEIGHT 8
#define TEST_GADGET2_TEXT "_Image"
#define TEST_GADGET2_TEXT_ATTR &topaz60_attr
#define TEST_GADGET2_NORMAL_RENDER NULL /* (LONG)&image1 */
#define TEST_GADGET2_SELECT_RENDER (BYTE *)&image2
#define TEST_GADGET3_TYPE GADGET_DATA_TYPE_CHECK
#define TEST_GADGET3_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
#define TEST_GADGET3_LEFT_EDGE 20
#define TEST_GADGET3_TOP_EDGE 33
#define TEST_GADGET3_WIDTH 0
#define TEST_GADGET3_HEIGHT 0
#define TEST_GADGET3_TEXT "_Check gadget"
#define TEST_GADGET3_TEXT_ATTR &topaz60_attr
#define TEST_GADGET3_CHECK_STATE 1
#define TEST_GADGET4_TYPE GADGET_DATA_TYPE_MX
#define TEST_GADGET4_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET4_LEFT_EDGE 20
#define TEST_GADGET4_TOP_EDGE 60
#define TEST_GADGET4_WIDTH 0
#define TEST_GADGET4_HEIGHT 0
#define TEST_GADGET4_TEXT "Mutual e_xclude gadget"
#define TEST_GADGET4_TEXT_ATTR &topaz60_attr
#define TEST_GADGET4_SPACING 2
#define TEST_GADGET4_ACTIVE 1
#define TEST_GADGET4_TEXT_ARRAY &mx_array[0]
#define TEST_GADGET5_TYPE GADGET_DATA_TYPE_STRING
#define TEST_GADGET5_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_RIGHT)
#define TEST_GADGET5_LEFT_EDGE 20
#define TEST_GADGET5_TOP_EDGE 103
#define TEST_GADGET5_WIDTH 68
#define TEST_GADGET5_HEIGHT 0
#define TEST_GADGET5_TEXT "_String gadget"
#define TEST_GADGET5_TEXT_ATTR &topaz60_attr
#define TEST_GADGET5_INPUT_LEN 10
#define TEST_GADGET5_AUTO_ACTIVATE INPUT_AUTO_ACTIVATE(TEST_GADGET_INTEGER, TEST_GADGET_INTEGER)
#define TEST_GADGET5_INPUT_DEFAULT "Test"
#define TEST_GADGET6_TYPE GADGET_DATA_TYPE_INTEGER
#define TEST_GADGET6_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET6_LEFT_EDGE (20 + 14 * 10 + 8)
#define TEST_GADGET6_TOP_EDGE 118
#define TEST_GADGET6_WIDTH 68
#define TEST_GADGET6_HEIGHT 0
#define TEST_GADGET6_TEXT "I_nteger gadget"
#define TEST_GADGET6_TEXT_ATTR &topaz60_attr
#define TEST_GADGET6_INPUT_LEN 10
#define TEST_GADGET6_AUTO_ACTIVATE INPUT_AUTO_ACTIVATE(TEST_GADGET_STRING, TEST_GADGET_STRING)
#define TEST_GADGET6_INPUT_DEFAULT (BYTE *)123
#define TEST_GADGET7_TYPE GADGET_DATA_TYPE_SLIDER
#define TEST_GADGET7_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
#define TEST_GADGET7_LEFT_EDGE 20
#define TEST_GADGET7_TOP_EDGE 135
#define TEST_GADGET7_WIDTH 100
#define TEST_GADGET7_HEIGHT 9
#define TEST_GADGET7_TEXT "S_lider gadget"
#define TEST_GADGET7_TEXT_ATTR &topaz60_attr
#define TEST_GADGET7_MIN -10
#define TEST_GADGET7_MAX 10
#define TEST_GADGET7_LEVEL 0
#define TEST_GADGET8_TYPE GADGET_DATA_TYPE_SLIDER
#define TEST_GADGET8_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_BELOW)
#define TEST_GADGET8_LEFT_EDGE 390
#define TEST_GADGET8_TOP_EDGE 10
#define TEST_GADGET8_WIDTH 18
#define TEST_GADGET8_HEIGHT 50
#define TEST_GADGET8_TEXT "Sli_der gadget"
#define TEST_GADGET8_TEXT_ATTR &topaz60_attr
#define TEST_GADGET8_MIN -10
#define TEST_GADGET8_MAX 10
#define TEST_GADGET8_LEVEL 0
#define TEST_GADGET9_TYPE GADGET_DATA_TYPE_SCROLLER
#define TEST_GADGET9_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET9_LEFT_EDGE (20 + 15 * 10 + 8)
#define TEST_GADGET9_TOP_EDGE 148
#define TEST_GADGET9_WIDTH 100
#define TEST_GADGET9_HEIGHT 0
#define TEST_GADGET9_TEXT "Scr_oller gadget"
#define TEST_GADGET9_TEXT_ATTR &topaz60_attr
#define TEST_GADGET9_VISIBLE 4
#define TEST_GADGET9_TOTAL 20
#define TEST_GADGET9_TOP (BYTE *)10
#define TEST_GADGET10_TYPE GADGET_DATA_TYPE_SCROLLER
#define TEST_GADGET10_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_ORIENTATION_VERT | GADGET_DATA_FLAG_TEXT_ABOVE)
#define TEST_GADGET10_LEFT_EDGE 490
#define TEST_GADGET10_TOP_EDGE 24
#define TEST_GADGET10_WIDTH 0
#define TEST_GADGET10_HEIGHT 50
#define TEST_GADGET10_TEXT "Sc_roller gadget"
#define TEST_GADGET10_TEXT_ATTR &topaz60_attr
#define TEST_GADGET10_VISIBLE 4
#define TEST_GADGET10_TOTAL 20
#define TEST_GADGET10_TOP (BYTE *)10
#define TEST_GADGET11_TYPE GADGET_DATA_TYPE_CYCLE
#define TEST_GADGET11_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET11_LEFT_EDGE 265
#define TEST_GADGET11_TOP_EDGE 78
#define TEST_GADGET11_WIDTH 160
#define TEST_GADGET11_HEIGHT 15
#define TEST_GADGET11_TEXT "C_ycle gadget"
#define TEST_GADGET11_TEXT_ATTR &topaz60_attr
#define TEST_GADGET11_SPACING 1
#define TEST_GADGET11_ACTIVE 2
#define TEST_GADGET11_TEXT_ARRAY &cycle_array[0]
#define TEST_GADGET12_TYPE GADGET_DATA_TYPE_COUNT
#define TEST_GADGET12_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_RIGHT)
#define TEST_GADGET12_LEFT_EDGE 325
#define TEST_GADGET12_TOP_EDGE 96
#define TEST_GADGET12_WIDTH 80
#define TEST_GADGET12_HEIGHT 12
#define TEST_GADGET12_TEXT "Co_unt gadget"
#define TEST_GADGET12_TEXT_ATTR &topaz80_attr
#define TEST_GADGET12_MIN 100
#define TEST_GADGET12_MAX 1000
#define TEST_GADGET12_VALUE (BYTE *)600
#define TEST_GADGET13_TYPE GADGET_DATA_TYPE_LISTVIEW
#define TEST_GADGET13_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2 | GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED | GADGET_DATA_FLAG_LISTVIEW_ENTRY_COLOR)
#define TEST_GADGET13_LEFT_EDGE 370
#define TEST_GADGET13_TOP_EDGE 126
#define TEST_GADGET13_WIDTH 104
#define TEST_GADGET13_HEIGHT 35
#define TEST_GADGET13_TEXT "List _view gadget"
#define TEST_GADGET13_TEXT_ATTR &topaz60_attr
#define TEST_GADGET13_SPACING 0
#define TEST_GADGET13_TOP 0
#define TEST_GADGET13_LIST (BYTE *)&test_list
#define TEST_GADGET14_TYPE GADGET_DATA_TYPE_PALETTE
#define TEST_GADGET14_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_TEXT_COLOR2)
#define TEST_GADGET14_LEFT_EDGE 220
#define TEST_GADGET14_TOP_EDGE 23
#define TEST_GADGET14_WIDTH 150
#define TEST_GADGET14_HEIGHT 20
#define TEST_GADGET14_TEXT "_Palette gadget"
#define TEST_GADGET14_TEXT_ATTR &topaz60_attr
#define TEST_GADGET14_DEPTH 2
#define TEST_GADGET14_COLOR_OFFSET 0
#define TEST_GADGET14_ACTIVE_COLOR (BYTE *)0
/* Statics for test gadgets */
STATIC UWORD image1_data[] = {
0xffff, 0x8000, 0xbff0, 0xa00c, 0xa00c, 0xbff0, 0x8000, 0x8000,
0x0000, 0x0001, 0x0005, 0x1ff1, 0x1ff1, 0x0005, 0x0001, 0x7fff
};
STATIC struct Image image1 = { 0, 0, 16, 8, 2, &image1_data[0], 3, 0, NULL };
STATIC UWORD image2_data[] = {
0x0000, 0x000f, 0x3fff, 0x23fd, 0x3fcd, 0x7ff1, 0x7001, 0x7fff,
0xffff, 0x800e, 0x807e, 0x9ff8, 0x9ff0, 0xfe04, 0xf000, 0x8000
};
STATIC struct Image image2 = { 0, 0, 16, 8, 2, &image2_data[0], 3, 0, NULL };
STATIC BYTE *mx_array[] = {
"Fast File System", "Old File System", "Custom File System", NULL
};
STATIC BYTE *cycle_array[] = {
"Amiga", "Workbench", "AmigaDOS", "Multitasking", "CLI", "ARexx",
"TeX", "Unix", NULL
};
STATIC BYTE *list_array[] = {
"\001Amiga", "Workbench", "\001AmigaDOS", "Multitasking", "\001CLI",
"ARexx", "\001TeX", "Unix", NULL
};
STATIC struct List test_list;
STATIC struct GadgetData test_gadget_data[] = {
{
TEST_GADGET1_TYPE, /* gd_Type */
TEST_GADGET1_FLAGS, /* gd_Flags */
TEST_GADGET1_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET1_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET1_WIDTH, /* gd_Width */
TEST_GADGET1_HEIGHT, /* gd_Height */
TEST_GADGET1_TEXT, /* *gd_Text */
TEST_GADGET1_TEXT_ATTR, /* *gd_TextAttr */
{ 0, 0, 0 }
}, {
TEST_GADGET2_TYPE, /* gd_Type */
TEST_GADGET2_FLAGS, /* gd_Flags */
TEST_GADGET2_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET2_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET2_WIDTH, /* gd_Width */
TEST_GADGET2_HEIGHT, /* gd_Height */
TEST_GADGET2_TEXT, /* *gd_Text */
TEST_GADGET2_TEXT_ATTR, /* *gd_TextAttr */
{ 0,
TEST_GADGET2_NORMAL_RENDER, /* gd_ButtonNormalRender */
TEST_GADGET2_SELECT_RENDER /* gd_ButtonSelectRender */
}
}, {
TEST_GADGET3_TYPE, /* gd_Type */
TEST_GADGET3_FLAGS, /* gd_Flags */
TEST_GADGET3_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET3_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET3_WIDTH, /* gd_Width */
TEST_GADGET3_HEIGHT, /* gd_Height */
TEST_GADGET3_TEXT, /* *gd_Text */
TEST_GADGET3_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET3_CHECK_STATE, /* gd_CheckState */
0, 0 }
}, {
TEST_GADGET4_TYPE, /* gd_Type */
TEST_GADGET4_FLAGS, /* gd_Flags */
TEST_GADGET4_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET4_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET4_WIDTH, /* gd_Width */
TEST_GADGET4_HEIGHT, /* gd_Height */
TEST_GADGET4_TEXT, /* *gd_Text */
TEST_GADGET4_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET4_SPACING, /* gd_MXSpacing */
TEST_GADGET4_ACTIVE, /* gd_MXActiveEntry */
TEST_GADGET4_TEXT_ARRAY /* gd_MXTextArray */
}
}, {
TEST_GADGET5_TYPE, /* gd_Type */
TEST_GADGET5_FLAGS, /* gd_Flags */
TEST_GADGET5_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET5_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET5_WIDTH, /* gd_Width */
TEST_GADGET5_HEIGHT, /* gd_Height */
TEST_GADGET5_TEXT, /* *gd_Text */
TEST_GADGET5_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET5_INPUT_LEN, /* gd_InputLen */
TEST_GADGET5_AUTO_ACTIVATE, /* gd_InputActivatePrev/Next */
TEST_GADGET5_INPUT_DEFAULT /* gd_InputDefault */
}
}, {
TEST_GADGET6_TYPE, /* gd_Type */
TEST_GADGET6_FLAGS, /* gd_Flags */
TEST_GADGET6_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET6_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET6_WIDTH, /* gd_Width */
TEST_GADGET6_HEIGHT, /* gd_Height */
TEST_GADGET6_TEXT, /* *gd_Text */
TEST_GADGET6_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET6_INPUT_LEN, /* gd_InputLen */
TEST_GADGET6_AUTO_ACTIVATE, /* gd_InputActivatePrev/Next */
TEST_GADGET6_INPUT_DEFAULT /* gd_InputDefault */
}
}, {
TEST_GADGET7_TYPE, /* gd_Type */
TEST_GADGET7_FLAGS, /* gd_Flags */
TEST_GADGET7_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET7_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET7_WIDTH, /* gd_Width */
TEST_GADGET7_HEIGHT, /* gd_Height */
TEST_GADGET7_TEXT, /* *gd_Text */
TEST_GADGET7_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET7_MIN, /* gd_SliderMin */
TEST_GADGET7_MAX, /* gd_SliderMax */
TEST_GADGET7_LEVEL /* gd_SliderLevel */
}
}, {
TEST_GADGET8_TYPE, /* gd_Type */
TEST_GADGET8_FLAGS, /* gd_Flags */
TEST_GADGET8_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET8_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET8_WIDTH, /* gd_Width */
TEST_GADGET8_HEIGHT, /* gd_Height */
TEST_GADGET8_TEXT, /* *gd_Text */
TEST_GADGET8_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET8_MIN, /* gd_SliderMin */
TEST_GADGET8_MAX, /* gd_SliderMax */
TEST_GADGET8_LEVEL /* gd_SliderLevel */
}
}, {
TEST_GADGET9_TYPE, /* gd_Type */
TEST_GADGET9_FLAGS, /* gd_Flags */
TEST_GADGET9_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET9_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET9_WIDTH, /* gd_Width */
TEST_GADGET9_HEIGHT, /* gd_Height */
TEST_GADGET9_TEXT, /* *gd_Text */
TEST_GADGET9_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET9_VISIBLE, /* gd_ScrollerVisible */
TEST_GADGET9_TOTAL, /* gd_ScrollerTotal */
TEST_GADGET9_TOP /* gd_ScrollerTop */
}
}, {
TEST_GADGET10_TYPE, /* gd_Type */
TEST_GADGET10_FLAGS, /* gd_Flags */
TEST_GADGET10_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET10_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET10_WIDTH, /* gd_Width */
TEST_GADGET10_HEIGHT, /* gd_Height */
TEST_GADGET10_TEXT, /* *gd_Text */
TEST_GADGET10_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET10_VISIBLE, /* gd_ScrollerVisible */
TEST_GADGET10_TOTAL, /* gd_ScrollerTotal */
TEST_GADGET10_TOP /* gd_ScrollerTop */
}
}, {
TEST_GADGET11_TYPE, /* gd_Type */
TEST_GADGET11_FLAGS, /* gd_Flags */
TEST_GADGET11_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET11_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET11_WIDTH, /* gd_Width */
TEST_GADGET11_HEIGHT, /* gd_Height */
TEST_GADGET11_TEXT, /* *gd_Text */
TEST_GADGET11_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET11_SPACING, /* gd_CycleSpacing */
TEST_GADGET11_ACTIVE, /* gd_CycleActive */
TEST_GADGET11_TEXT_ARRAY /* gd_CycleTextArray */
}
}, {
TEST_GADGET12_TYPE, /* gd_Type */
TEST_GADGET12_FLAGS, /* gd_Flags */
TEST_GADGET12_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET12_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET12_WIDTH, /* gd_Width */
TEST_GADGET12_HEIGHT, /* gd_Height */
TEST_GADGET12_TEXT, /* *gd_Text */
TEST_GADGET12_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET12_MIN, /* gd_CountMin */
TEST_GADGET12_MAX, /* gd_CountMax */
TEST_GADGET12_VALUE /* gd_CountValue */
}
}, {
TEST_GADGET13_TYPE, /* gd_Type */
TEST_GADGET13_FLAGS, /* gd_Flags */
TEST_GADGET13_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET13_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET13_WIDTH, /* gd_Width */
TEST_GADGET13_HEIGHT, /* gd_Height */
TEST_GADGET13_TEXT, /* *gd_Text */
TEST_GADGET13_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET13_SPACING, /* gd_ListViewSpacing */
TEST_GADGET13_TOP, /* gd_ListViewTop */
TEST_GADGET13_LIST /* gd_ListViewList */
}
}, {
TEST_GADGET14_TYPE, /* gd_Type */
TEST_GADGET14_FLAGS, /* gd_Flags */
TEST_GADGET14_LEFT_EDGE, /* gd_LeftEdge */
TEST_GADGET14_TOP_EDGE, /* gd_TopEdge */
TEST_GADGET14_WIDTH, /* gd_Width */
TEST_GADGET14_HEIGHT, /* gd_Height */
TEST_GADGET14_TEXT, /* *gd_Text */
TEST_GADGET14_TEXT_ATTR, /* *gd_TextAttr */
{
TEST_GADGET14_DEPTH, /* gd_PaletteDepth */
TEST_GADGET14_COLOR_OFFSET, /* gd_PaletteColorOffset */
TEST_GADGET14_ACTIVE_COLOR /* gd_PaletteActiveColor */
}
}, {
INTUISUP_DATA_END /* end of gadget data array */
}
};
/* Defines for auto request */
#define TEST1_AUTO_REQ_TITLE " Auto Request "
#define TEST1_AUTO_REQ_BODY_TEXT "Test line 1\\n\\nTest line 2\\nTest line 3\\n\\nTest line 4"
#define TEST1_AUTO_REQ_POS_TEXT "_Positive"
#define TEST1_AUTO_REQ_NEG_TEXT "_Negative"
#define TEST1_AUTO_REQ_FLAGS (AUTO_REQ_FLAG_BACK_FILL | AUTO_REQ_FLAG_TEXT_CENTER | AUTO_REQ_FLAG_TEXT_COLOR2 | AUTO_REQ_FLAG_HOTKEY | AUTO_REQ_FLAG_CENTER_MOUSE | AUTO_REQ_FLAG_DRAW_RASTER)
/* Defines for requester */
#define TEST2_REQ_WIDTH 200
#define TEST2_REQ_HEIGHT 100
#define TEST2_REQ_FLAGS (REQ_DATA_FLAG_BACK_FILL | REQ_DATA_FLAG_CENTER_WINDOW | REQ_DATA_FLAG_INNER_WINDOW)
#define TEST2_REQ_TITLE " Requester "
#define TEST2_TEXT1_TYPE TEXT_DATA_TYPE_TEXT
#define TEST2_TEXT1_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
#define TEST2_TEXT1_LEFT_EDGE 0
#define TEST2_TEXT1_TOP_EDGE 20
#define TEST2_TEXT1_TEXT "Text Line 1"
#define TEST2_TEXT1_TEXT_ATTR &topaz60_attr
#define TEST2_TEXT2_TYPE TEXT_DATA_TYPE_TEXT
#define TEST2_TEXT2_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_ITALIC | TEXT_DATA_FLAG_COLOR2)
#define TEST2_TEXT2_LEFT_EDGE 0
#define TEST2_TEXT2_TOP_EDGE (TEST2_TEXT1_TOP_EDGE + 10)
#define TEST2_TEXT2_TEXT "Text Line 2"
#define TEST2_TEXT2_TEXT_ATTR &topaz80_attr
#define TEST2_TEXT3_TYPE TEXT_DATA_TYPE_TEXT
#define TEST2_TEXT3_FLAGS (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_UNDERLINED)
#define TEST2_TEXT3_LEFT_EDGE 0
#define TEST2_TEXT3_TOP_EDGE (TEST2_TEXT2_TOP_EDGE + 10)
#define TEST2_TEXT3_TEXT "Text Line 3"
#define TEST2_TEXT3_TEXT_ATTR &topaz80_attr
#define TEST2_BORDER1_TYPE BORDER_DATA_TYPE_BOX2_OUT
#define TEST2_BORDER1_LEFT_EDGE 20
#define TEST2_BORDER1_TOP_EDGE 10
#define TEST2_BORDER1_WIDTH (TEST2_REQ_WIDTH - 2 * TEST2_BORDER1_LEFT_EDGE)
#define TEST2_BORDER1_HEIGHT (TEST2_REQ_HEIGHT - (3 * TEST2_BORDER1_TOP_EDGE + TEST2_GADGET1_HEIGHT))
#define TEST2_GADGET_CONTINUE 0
#define TEST2_GADGET1_TYPE GADGET_DATA_TYPE_BUTTON
#define TEST2_GADGET1_FLAGS (GADGET_DATA_FLAG_HOTKEY | GADGET_DATA_FLAG_MOVE_POINTER)
#define TEST2_GADGET1_LEFT_EDGE ((TEST2_REQ_WIDTH - TEST2_GADGET1_WIDTH) / 2)
#define TEST2_GADGET1_TOP_EDGE (TEST2_REQ_HEIGHT - (TEST2_GADGET1_HEIGHT + 10))
#define TEST2_GADGET1_WIDTH ((8 + 2) * 10)
#define TEST2_GADGET1_HEIGHT 19
#define TEST2_GADGET1_TEXT "_Continue"
#define TEST2_GADGET1_TEXT_ATTR &topaz60_attr
/* Statics for test borders */
STATIC struct TextData test2_text_data[] = {
{
TEST2_TEXT1_TYPE, /* td_Type */
TEST2_TEXT1_FLAGS, /* td_Flags */
TEST2_TEXT1_LEFT_EDGE, /* td_LeftEdge */
TEST2_TEXT1_TOP_EDGE, /* td_TopEdge */
TEST2_TEXT1_TEXT, /* *td_Text */
TEST2_TEXT1_TEXT_ATTR /* *td_TextAttr */
}, {
TEST2_TEXT2_TYPE, /* td_Type */
TEST2_TEXT2_FLAGS, /* td_Flags */
TEST2_TEXT2_LEFT_EDGE, /* td_LeftEdge */
TEST2_TEXT2_TOP_EDGE, /* td_TopEdge */
TEST2_TEXT2_TEXT, /* *td_Text */
TEST2_TEXT2_TEXT_ATTR /* *td_TextAttr */
}, {
TEST2_TEXT3_TYPE, /* td_Type */
TEST2_TEXT3_FLAGS, /* td_Flags */
TEST2_TEXT3_LEFT_EDGE, /* td_LeftEdge */
TEST2_TEXT3_TOP_EDGE, /* td_TopEdge */
TEST2_TEXT3_TEXT, /* *td_Text */
TEST2_TEXT3_TEXT_ATTR /* *td_TextAttr */
}, {
INTUISUP_DATA_END /* mark end of border data array */
}
};
STATIC struct BorderData test2_border_data[] = {
{
TEST2_BORDER1_TYPE, /* bd_Type */
TEST2_BORDER1_LEFT_EDGE, /* bd_LeftEdge */
TEST2_BORDER1_TOP_EDGE, /* bd_TopEdge */
TEST2_BORDER1_WIDTH, /* bd_Width */
TEST2_BORDER1_HEIGHT /* bd_Height */
}, {
INTUISUP_DATA_END /* mark end of border data array */
}
};
STATIC struct GadgetData test2_gadget_data[] = {
{
TEST2_GADGET1_TYPE, /* gd_Type */
TEST2_GADGET1_FLAGS, /* gd_Flags */
TEST2_GADGET1_LEFT_EDGE, /* gd_LeftEdge */
TEST2_GADGET1_TOP_EDGE, /* gd_TopEdge */
TEST2_GADGET1_WIDTH, /* gd_Width */
TEST2_GADGET1_HEIGHT, /* gd_Height */
TEST2_GADGET1_TEXT, /* *gd_Text */
TEST2_GADGET1_TEXT_ATTR, /* *gd_TextAttr */
{ 0, 0, 0 }
}, {
INTUISUP_DATA_END /* mark end of border data array */
}
};
STATIC struct RequesterData test2_requester_data = {
0, /* rd_LeftEdge */
0, /* rd_TopEdge */
TEST2_REQ_WIDTH, /* rd_Width */
TEST2_REQ_HEIGHT, /* rd_Height */
TEST2_REQ_FLAGS, /* rd_Flags */
TEST2_REQ_TITLE, /* *rd_Title */
&test2_text_data[0], /* *rd_Texts */
&test2_border_data[0], /* *rd_Borders */
&test2_gadget_data[0] /* *rd_Gadgets */
};
/* Defines for test menus */
#define TEST_MENU_TEXT_ATTR &topaz60_attr
/* Statics for test menus */
STATIC struct MenuData test_menu_data[] = {
{
MENU_DATA_TYPE_TITLE, 0, "Menu 0", NULL, 0
}, {
MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE | MENU_DATA_FLAG_SELECTED, "Item 0.0", "0", ~(1L << 0)
}, {
MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_ATTRIBUTE, "Item 0.1", "1", ~(1L << 1)
}, {
MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 0.2", NULL, 0
}, {
MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.0", "A", 0
}, {
MENU_DATA_TYPE_SUBITEM, 0, "Item 0.2.1", "B", 0
}, {
MENU_DATA_TYPE_ITEM, 0, "Item 0.3", NULL, 0
}, {
MENU_DATA_TYPE_TITLE, 0, "Menu 1", NULL, 0
}, {
MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_HIGH_BOX, "Item 1.0", "C", 0
}, {
MENU_DATA_TYPE_ITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.1", "D", 0
}, {
MENU_DATA_TYPE_ITEM, 0, "Item 1.2", NULL, 0
}, {
MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.0", "E", 0
}, {
MENU_DATA_TYPE_SUBITEM, 0, "Item 1.2.1", "F", 0
}, {
MENU_DATA_TYPE_ITEM, 0, "Item 1.3", NULL, 0
}, {
MENU_DATA_TYPE_SUBITEM, 0, "Item 1.3.0", "G", 0
}, {
MENU_DATA_TYPE_SUBITEM, MENU_DATA_FLAG_EMPTY_LINE, "Item 1.3.1", "H", 0
}, {
MENU_DATA_TYPE_ITEM, 0, "Item 1.4", "I", 0
}, {
INTUISUP_DATA_END /* mark end of menu data */
}
};
/* Prototypes */
VOID test_action(APTR ri, struct Window *win, APTR gl, APTR ml);
BOOL build_test_list(VOID);
VOID free_test_list(VOID);
/* Library test */
LONG
main(VOID)
{
struct Window *win;
APTR ri, gl, ml;
if (IntuitionBase = OpenLibrary("intuition.library", 0L)) {
if (IntuiSupBase = OpenLibrary(IntuiSupName, IntuiSupVersion)) {
if (build_test_list() == TRUE) {
if (ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) {
if (win = IOpenWindow(ri, &test_new_window,
OPEN_WINDOW_FLAGS)) {
test_gadget_data[TEST_GADGET_BUTTON_IMAGE].gd_SpecialData.gd_ButtonData.gd_ButtonNormalRender = &image1;
if (gl = ICreateGadgets(ri, &test_gadget_data[0], 0, 0,
NULL)) {
if (ml = ICreateMenu(ri, win, &test_menu_data[0],
TEST_MENU_TEXT_ATTR, NULL)) {
IDisplayGadgets(win, gl);
IAttachMenu(win, ml);
test_action(ri, win, gl, ml);
IRemoveMenu(ml);
IRemoveGadgets(gl);
IFreeMenu(ml);
}
IFreeGadgets(gl);
}
ICloseWindow(win, FALSE);
}
IFreeRenderInfo(ri);
}
free_test_list();
}
CloseLibrary(IntuiSupBase);
}
CloseLibrary(IntuitionBase);
}
return(0L);
}
/* Perform IDCMP action */
VOID
test_action(APTR ri, struct Window *win, APTR gl, APTR ml)
{
struct MsgPort *up = win->UserPort;
BOOL input = TRUE, keepon2 = TRUE;
/* Waiting for close window event */
do {
struct IntuiMessage *msg2;
WaitPort(up);
while (msg2 = IGetMsg(up)) {
BYTE *format, buffer[80];
USHORT code = msg2->Code;
switch (msg2->Class) {
case CLOSEWINDOW :
keepon2 = FALSE;
break;
case ISUP_ID :
if (code == TEST_GADGET_STRING) {
format = MESSAGE_TEXT1;
} else {
format = MESSAGE_TEXT2;
}
sprintf(&buffer[0], format, code, msg2->IAddress);
IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
/* Change gadgets */
switch (code) {
case TEST_GADGET_CHECK :
if (msg2->IAddress) {
ISetGadgetAttributes(gl, TEST_GADGET_LISTVIEW,
GADGET_DATA_FLAG_DISABLED, 0L,
USE_CURRENT_VALUE, (ULONG)TEST_GADGET13_TOP,
(VOID *)TEST_GADGET13_LIST);
} else {
ISetGadgetAttributes(gl, TEST_GADGET_LISTVIEW,
GADGET_DATA_FLAG_DISABLED,
GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
USE_CURRENT_VALUE, (VOID *)NULL);
}
break;
case TEST_GADGET_BUTTON :
if (input == FALSE) {
ISetGadgetAttributes(gl, TEST_GADGET_INTEGER,
GADGET_DATA_FLAG_DISABLED, 0L, USE_CURRENT_VALUE,
USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
input = TRUE;
} else {
ISetGadgetAttributes(gl, TEST_GADGET_INTEGER,
GADGET_DATA_FLAG_DISABLED,
GADGET_DATA_FLAG_DISABLED, USE_CURRENT_VALUE,
USE_CURRENT_VALUE, (VOID *)USE_CURRENT_VALUE);
input = FALSE;
}
break;
case TEST_GADGET_BUTTON_IMAGE :
if (msg2->IAddress) {
IAutoRequest(win, TEST1_AUTO_REQ_TITLE,
TEST1_AUTO_REQ_BODY_TEXT,
TEST1_AUTO_REQ_POS_TEXT,
TEST1_AUTO_REQ_NEG_TEXT, 0L, 0L,
TEST1_AUTO_REQ_FLAGS, NULL);
} else {
APTR rl;
if (rl = IDisplayRequester(win,
&test2_requester_data, NULL)) {
BOOL keepon1 = TRUE;
do {
struct IntuiMessage *msg1;
WaitPort(up);
while (msg1 = IGetMsg(up)) {
if (msg1->Class == ISUP_ID) {
keepon1 = FALSE;
}
IReplyMsg(msg1);
}
} while (keepon1 == TRUE);
IRemoveRequester(rl);
}
}
break;
}
break;
case MENUPICK :
while (code != MENUNULL) {
sprintf(&buffer[0], MESSAGE_TEXT3,
(MENUNUM(code) != NOMENU ? MENUNUM(code) : 0),
(ITEMNUM(code) != NOITEM ? ITEMNUM(code) : 0),
(SUBNUM(code) != NOSUB ? SUBNUM(code) : 0));
IClearWindow(ri, win, MESSAGE_LEFT_EDGE, MESSAGE_TOP_EDGE,
MESSAGE_LEFT_EDGE + MESSAGE_WIDTH - 1,
MESSAGE_TOP_EDGE + MESSAGE_HEIGHT - 1, 0);
IPrintText(ri, win, &buffer[0], 0, MESSAGE_TOP_EDGE,
TEXT_DATA_TYPE_TEXT, TEXT_DATA_FLAG_CENTER |
TEXT_DATA_FLAG_COLOR2, MESSAGE_TEXT_ATTR);
code = IMenuItemAddress(ml, code)->NextSelect;
}
break;
}
IReplyMsg(msg2);
}
} while (keepon2 == TRUE);
}
/* Build test list */
BOOL
build_test_list(VOID)
{
struct List *list = &test_list;
BYTE *text, **ptr = &list_array[0];
BOOL success = TRUE;
NewList(list);
while (text = *ptr++) {
struct Node *node;
if (node = AllocMem((LONG)sizeof(struct Node),
(LONG)MEMF_PUBLIC | MEMF_CLEAR)) {
node->ln_Name = text;
AddTail(list, node);
} else {
free_test_list();
success = FALSE;
break;
}
}
return(success);
}
/* Free test list */
VOID
free_test_list(VOID)
{
struct List *list = &test_list;
struct Node *node;
while (node = RemHead(list)) {
FreeMem(node, (LONG)sizeof(struct Node));
}
}